HAL DAC control functions migration

This section provides information about the HAL ADC control functions migration.

HAL DAC get value

Function description

  • The HAL_DAC_GetChannelData used to read the output data of a specific DAC channel.

HAL1

HAL2

HAL_DAC_GetValue
HAL_DAC_GetChannelData

HAL DAC configuration channel

  • In HAL2, the DAC configuration channel is split into three separate functions:

    HAL_DAC_SetConfig(), HAL_DAC_SetConfigChannel() and HAL_DAC_SetConfigChannelSampleAndHold.

HAL1

HAL2

HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac,
                      const DAC_ChannelConfTypeDef *sConfig,
                      uint32_t Channel);
HAL_DAC_SetConfig(hal_dac_handle_t *hdac,
                  const hal_dac_config_t *p_config);

HAL_DAC_SetConfigChannel(hal_dac_handle_t *hdac, hal_dac_channel_t channel,
                         const hal_dac_channel_config_t *p_config);

HAL_DAC_SetConfigChannelSampleAndHold(hal_dac_handle_t *hdac,
                                                   hal_dac_channel_t channel,
                                                   const hal_dac_channel_sample_and_hold_config_t *p_config);

Example Usage

HAL1

HAL2

DAC_HandleTypeDef               DAC_Handle_HAL_Var;
DAC_ChannelConfTypeDef          DAC_ChannelConf_HAL_Var;
DAC_ChannelConf_HAL_Var.DAC_HighFrequency                       = DAC_HIGH_FREQUENCY_INTERFACE_MODE_ABOVE_80MHZ;
DAC_ChannelConf_HAL_Var.DAC_AutonomousMode                      = DAC_AUTONOMOUS_MODE_DISABLE;
DAC_ChannelConf_HAL_Var.DAC_DMADoubleDataMode                   = ENABLE;
DAC_ChannelConf_HAL_Var.DAC_SignedFormat                        = ENABLE;
DAC_ChannelConf_HAL_Var.DAC_SampleAndHold                       = DAC_SAMPLEANDHOLD_DISABLE;
DAC_ChannelConf_HAL_Var.DAC_Trigger                             = DAC_TRIGGER_SOFTWARE;
DAC_ChannelConf_HAL_Var.DAC_OutputBuffer                        = DAC_OUTPUTBUFFER_ENABLE;
DAC_ChannelConf_HAL_Var.DAC_ConnectOnChipPeripheral             = DAC_CHIPCONNECT_EXTERNAL;
DAC_ChannelConf_HAL_Var.DAC_UserTrimming                        = DAC_TRIMMING_USER;
DAC_ChannelConf_HAL_Var.DAC_TrimmingValue                       = 31;
DAC_ChannelConf_HAL_Var.DAC_SampleAndHoldConfig.DAC_SampleTime  = 1023;
DAC_ChannelConf_HAL_Var.DAC_SampleAndHoldConfig.DAC_HoldTime    = 1023;
DAC_ChannelConf_HAL_Var.DAC_SampleAndHoldConfig.DAC_RefreshTime = 255;
if (HAL_DAC_ConfigChannel(&DAC_Handle_HAL_Var,
 &DAC_ChannelConf_HAL_Var, DAC_CHANNEL_1) != HAL_OK)
{
   while(1);
}
hal_dac_handle_t                         DAC_Handle_HAL_Var;
hal_dac_channel_config_t                 DAC_ChannelConf_HAL_Var;
hal_dac_config_t                         p_config ;
hal_dac_channel_sample_and_hold_config_t channel_samplehold_config;

p_config.high_frequency_mode = HAL_DAC_HIGH_FREQ_MODE_ABOVE_80MHZ;

if (HAL_DAC_SetConfig(&DAC_Handle_HAL_Var, & p_config) != HAL_OK)
{
}
HAL_DAC_AM_Disable(&DAC_Handle_HAL_Var);
HAL_DAC_EnableChannelDMADoubleDataMode(&DAC_Handle_HAL_Var, HAL_DAC_CHANNEL_1);
DAC_ChannelConf_HAL_Var.data_sign_format  = HAL_DAC_SIGN_FORMAT_SIGNED;
HAL_DAC_DisableChannelSampleAndHold(&DAC_Handle_HAL_Var,
                                    HAL_DAC_CHANNEL_1);
DAC_ChannelConf_HAL_Var.trigger           = HAL_DAC_TRIGGER_SOFTWARE;
DAC_ChannelConf_HAL_Var.output_buffer     = HAL_DAC_OUTPUT_BUFFER_ENABLED;

DAC_ChannelConf_HAL_Var.output_connection = HAL_DAC_OUTPUT_CONNECTION_EXTERNAL;
HAL_DAC_SetChannelBufferCalibrationValue(&DAC_Handle_HAL_Var,
                                         HAL_DAC_CHANNEL_1,
                                         31);
DAC_ChannelConf_HAL_Var.alignment         = HAL_DAC_DATA_ALIGN_12_BITS_RIGHT;
if (HAL_DAC_SetConfigChannel(&DAC_Handle_HAL_Var,
 HAL_DAC_CHANNEL_1, &DAC_ChannelConf_HAL_Var) != HAL_OK)
{
}
channel_samplehold_config.sample_time_cycle  = 1023;
channel_samplehold_config.hold_time_cycle    = 1023;
channel_samplehold_config.refresh_time_cycle = 255;
HAL_DAC_SetConfigChannelSampleAndHold(&DAC_Handle_HAL_Var,
                                      HAL_DAC_CHANNEL_1,
                                      &channel_samplehold_config);